home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zd.d64 / src.text < prev    next >
Text File  |  2007-03-01  |  4KB  |  261 lines

  1. ;
  2. ;:::::::::::::::::::::::::::::::::
  3. ; SRC.TEXT (COMAL MODULE)        :
  4. ;                                :
  5. ; BY M.BOKHORST, NOV85           :
  6. ; REVISED BY D.KLINGENS          :
  7. ;                                :
  8. ; DUTCH COMAL USERS GROUP        :
  9. ;:::::::::::::::::::::::::::::::::
  10. ;
  11. ;-- VARIABLES & CONSTANTS --
  12. ;
  13. DEFPAG = %01000110
  14. DUMMY  = $CA2F
  15. PROC   = 112
  16. ENDPRC = 126
  17. FUNC   = 227
  18. ENDFNC = 126
  19. PSHINT = $C9CE
  20. STR    = 2
  21. REF    = 117
  22. POINT  = $FB
  23. FNDPAR = $C896
  24. COPY1  = $45
  25. COPY2  = $47
  26. COPY3  = $49
  27. COPYDN = $C8A2
  28. RUNERR = $C9FB
  29. ;
  30. ;-- MODULE --
  31. ;
  32. *      = $8009
  33. ;
  34.        .BYTE DEFPAG
  35. EINDE  .WORD END
  36.        .WORD DUMMY
  37.        .BYTE 4,'TEXT'
  38.        .WORD PROCS
  39.        .WORD RESET
  40.        .BYTE 0
  41. ;
  42. ;-- PROCEDURES & FUNCTIONS --
  43. ;
  44. PROCS  .BYTE 7,'REWRITE'
  45.        .WORD HEMPTY
  46.        .BYTE 3,'PUT'
  47.        .WORD HPUT
  48.        .BYTE 5,'GETIN'
  49.        .WORD HGET
  50.        .BYTE 5,'RESET'
  51.        .WORD HRES
  52.        .BYTE 3,'EOT'
  53.        .WORD HEOT
  54.        .BYTE 0
  55. ;
  56. ;-- HEADERS --
  57. ;
  58. HEMPTY .BYTE PROC
  59.        .WORD EMPTY
  60.        .BYTE 0
  61.        .BYTE ENDPRC
  62. ;
  63. HPUT   .BYTE PROC
  64.        .WORD PUT
  65.        .BYTE 1
  66.        .BYTE STR+REF
  67.        .BYTE ENDPRC
  68. ;
  69. HGET   .BYTE PROC
  70.        .WORD GET
  71.        .BYTE 1
  72.        .BYTE STR+REF
  73.        .BYTE ENDPRC
  74. ;
  75. HRES   .BYTE PROC
  76.        .WORD RESET
  77.        .BYTE 0
  78.        .BYTE ENDPRC
  79. ;
  80. HEOT   .BYTE FUNC
  81.        .WORD EOT
  82.        .BYTE 0
  83.        .BYTE ENDFNC
  84. ;
  85. ;-- CODE --
  86. ;
  87. EMPTY  LDA #<END
  88.        LDY #>END
  89.        STA EINDE
  90.        STY EINDE+1
  91. ;
  92. RESET  LDA #<END
  93.        LDY #>END
  94.        STA POINT
  95.        STY POINT+1
  96.        RTS
  97. ;
  98. EOT    JSR TEOF
  99.        LDA #0
  100.        ROL A
  101.        TAX
  102.        LDX #0
  103.        JMP PSHINT
  104. ;
  105. PUT    LDA #1
  106.        JSR FNDPAR
  107.        LDA COPY1
  108.        CLC
  109.        ADC #<2
  110.        STA COPY1
  111.        LDA COPY1+1
  112.        ADC #>2
  113.        STA COPY1+1
  114.        LDA EINDE
  115.        LDY EINDE+1
  116.        STA COPY2
  117.        STY COPY2+1
  118.        LDY #1
  119. SETUP  LDA (COPY1),Y
  120.        STA COPY3,Y
  121.        DEY
  122.        BPL SETUP
  123. ;
  124.        JSR LEN
  125.        LDA COPY3+1
  126.        CLC
  127.        ADC EINDE
  128.        TAX
  129.        LDA COPY3
  130.        ADC EINDE+1
  131.        CMP #$C0
  132.        BCS OUT
  133.        STX EINDE
  134.        STA EINDE+1
  135.        JMP COPYDN
  136. ;
  137. EOF    LDX #201        ;END-OF-FIL
  138.        .BYTE $2C       ;SKIP 2
  139. OUT    LDX #52         ;OUT OF MEM
  140.        JMP RUNERR
  141. ;
  142. TEOF   LDA POINT
  143.        SEC
  144.        SBC EINDE
  145.        LDA POINT+1
  146.        SBC EINDE+1
  147.        RTS
  148. ;
  149. GET    JSR TEOF
  150.        BCS EOF
  151.        LDA #1
  152.        JSR FNDPAR
  153.        LDA COPY1
  154.        CLC
  155.        ADC #<2
  156.        STA COPY2
  157.        LDA COPY1+1
  158.        ADC #>2
  159.        STA COPY2+1
  160.        LDY #1
  161.        LDA (COPY1),Y
  162.        SEC
  163.        SBC (POINT),Y
  164.        DEY
  165.        LDA (COPY1),Y
  166.        SBC (POINT),Y
  167.        BCC NOROOM
  168.        LDA POINT
  169.        LDY POINT+1
  170.        STA COPY1
  171.        STY COPY1+1
  172.        LDY #1
  173. SETUP1 LDA (POINT),Y
  174.        STA COPY3,Y
  175.        DEY
  176.        BPL SETUP1
  177.        JSR LEN
  178.        LDA POINT
  179.        CLC
  180.        ADC COPY3+1
  181.        STA POINT
  182.        LDA POINT+1
  183.        ADC COPY3
  184.        STA POINT+1
  185.        JMP COPY
  186. ;
  187. NOROOM LDA (COPY1),Y
  188.        STA COPY3
  189.        PHA
  190.        INY
  191.        LDA (COPY1),Y
  192.        STA COPY3+1
  193.        PHA
  194.        LDA POINT
  195.        LDY POINT+1
  196.        STA COPY1
  197.        STY COPY1+1
  198.        JSR LEN
  199.        LDY #1
  200.        LDA (POINT),Y
  201.        CLC
  202.        ADC POINT
  203.        TAX
  204.        DEY
  205.        LDA (POINT),Y
  206.        ADC POINT+1
  207.        TAY
  208.        TXA
  209.        CLC
  210.        ADC #<2
  211.        STA POINT
  212.        TYA
  213.        ADC #>2
  214.        STA POINT+1
  215.        LDY #1
  216.        PLA
  217.        STA (COPY1),Y
  218.        DEY
  219.        PLA
  220.        STA (COPY1),Y
  221. ;
  222. COPY   LDX COPY3
  223.        LDA COPY3+1
  224.        TAY
  225.        BEQ L001
  226.        EOR #255
  227.        TAY
  228.        INY
  229.        CLC
  230.        LDA COPY1
  231.        ADC COPY3+1
  232.        STA COPY1
  233.        BCS L002
  234.        DEC COPY1+1
  235. L002   CLC
  236.        LDA COPY2
  237.        ADC COPY3+1
  238.        STA COPY2
  239.        BCS L003
  240.        DEC COPY2+1
  241. L003   LDA (COPY1),Y
  242.        STA (COPY2),Y
  243.        INY
  244.        BNE L003
  245.        INC COPY1+1
  246.        INC COPY2+1
  247. L001   DEX
  248.        BPL L003
  249.        RTS
  250. ;
  251. LEN    LDA COPY3+1
  252.        CLC
  253.        ADC #<2
  254.        STA COPY3+1
  255.        LDA COPY3
  256.        ADC #>2
  257.        STA COPY3
  258.        RTS
  259. ;
  260. END    .END
  261.